import { IPSModelObject } from '../../ipsmodel-object';
import { IPSDEField } from '../defield/ipsdefield';
import { IPSSysMsgTarget } from '../../msg/ipssys-msg-target';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDENotifyTarget
 */
export interface IPSDENotifyTarget extends IPSModelObject {
  /**
   * 系统消息目标过滤项
   * @type {string}
   */
  filter: string;

  /**
   * 系统消息目标
   *
   * @type {IPSSysMsgTarget}
   */
  getPSSysMsgTarget(): IPSSysMsgTarget | null;

  /**
   * 系统消息目标
   *
   * @type {IPSSysMsgTarget}
   */
  get psSysMsgTarget(): IPSSysMsgTarget | null;

  /**
   * 系统消息目标（必须存在）
   *
   * @type {IPSSysMsgTarget}
   */
  getPSSysMsgTargetMust(): IPSSysMsgTarget;

  /**
   * 目标标识值存储属性
   *
   * @type {IPSDEField}
   */
  getTargetPSDEField(): IPSDEField | null;

  /**
   * 目标标识值存储属性
   *
   * @type {IPSDEField}
   */
  get targetPSDEField(): IPSDEField | null;

  /**
   * 目标标识值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getTargetPSDEFieldMust(): IPSDEField;

  /**
   * 目标类型
   * @description 值模式 [实体通知目标类型] {DEFIELD：当前实体属性、 SYSMSGTARGET：系统消息目标、 USER：用户自定义、 USER2：用户自定义2 }
   * @type {( string | 'DEFIELD' | 'SYSMSGTARGET' | 'USER' | 'USER2')}
   */
  targetType: string | 'DEFIELD' | 'SYSMSGTARGET' | 'USER' | 'USER2';

  /**
   * 目标类型值存储属性
   *
   * @type {IPSDEField}
   */
  getTargetTypePSDEField(): IPSDEField | null;

  /**
   * 目标类型值存储属性
   *
   * @type {IPSDEField}
   */
  get targetTypePSDEField(): IPSDEField | null;

  /**
   * 目标类型值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getTargetTypePSDEFieldMust(): IPSDEField;
}
